from django import forms

class BootStrapModelForm(forms.ModelForm):
    # 在Python中，*args和 ** kwargs是用于处理可变数量参数的机制，通常用于函数定义中。它们允许函数接受任意数量的位置参数和关键字参数。
    # 1. * args（可变位置参数）
    # 作用：用于接收任意数量的位置参数（positional arguments），并将它们打包成一个元组。
    # 语法：在参数前加 *（如 * args，名称可以自定义，但习惯用args）。
    # 2. ** kwargs（可变关键字参数）
    # 作用：用于接收任意数量的关键字参数（keyword arguments），并将它们打包成一个字典。
    # 语法：在参数前加 **（如 ** kwargs，名称可以自定义，但习惯用kwargs）。
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 循环ModelForm中的所有字段,给每个字段的插件设置
        for _, field in self.fields.items():
            # 字段中有属性,保留原来的属性,没有属性,才增加
            if field.widget.attrs:
                field.widget.attrs["class"] = "form-control"
            else:
                field.widget.attrs = {
                    "class": "form-control",
                }

class BootStrapForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 循环ModelForm中的所有字段,给每个字段的插件设置
        for _, field in self.fields.items():
            # 字段中有属性,保留原来的属性,没有属性,才增加
            if field.widget.attrs:
                field.widget.attrs["class"] = "form-control"
            else:
                field.widget.attrs = {
                    "class": "form-control",
                }
